package com.wh.testVolatile;

import java.util.concurrent.atomic.AtomicInteger;

/**
 * 原子性->不保证
 */
public class volatileDemo2 {

    //原子类 Integer
    private volatile static AtomicInteger num = new AtomicInteger();

    //    private volatile static int num=0;
    public static void main(String[] args) {
        for (int i = 0; i < 20; i++) {
            new Thread(() -> {
                for (int i1 = 0; i1 < 1000; i1++) {
                    add();
                }
            }).start();
        }
        while (Thread.activeCount() > 2) { //main gc都占一个线程
            Thread.yield();
        }
        System.out.println(num);
    }

    private static void add() {
        //num++; //不是一个原子操作
        num.getAndIncrement(); //AtomicInteger +1方法 ，用的CAS操作

    }
}
